const path = require("path");
const CompressionPlugin = require("compression-webpack-plugin");

function resolve(dir) {
	return path.join(__dirname, dir);
}

// vue.config.js
module.exports = {
	/*
	Vue-cli3:
	Crashed when using Webpack `import()` #2463
	https://github.com/vuejs/vue-cli/issues/2463
   */
	// 如果你不需要生产环境的 source map，可以将其设置为 false 以加速生产环境构建。
	productionSourceMap: false,
	// qiankuan打包时放开
	// outputDir: "../dist/main",
	// 多入口配置
	// pages: {
	//   index: {
	//     entry: 'src/main.js',
	//     template: 'public/index.html',
	//     filename: 'index.html',
	//   }
	// },
	// 打包app时放开该配置
	// publicPath:'/',
	configureWebpack: (config) => {
		// 生产环境取消 //console.log
		if (process.env.NODE_ENV === "production") {
			config.optimization.minimizer[0].options.terserOptions.compress.drop_console = true;
		}
	},
	chainWebpack: (config) => {
		config.resolve.alias
			.set("@$", resolve("src"))
			.set("@api", resolve("src/api"))
			.set("@assets", resolve("src/assets"))
			.set("@style", resolve("src/$style"))
			.set("@comp", resolve("src/components"))
			.set("@views", resolve("src/views"));

		// 生产环境，开启js\css压缩
		if (process.env.NODE_ENV === "production") {
			config.plugin("compressionPlugin").use(
				new CompressionPlugin({
					test: /\.(js|css|less)$/, // 匹配文件名
					threshold: 10240, // 对超过10k的数据压缩
					deleteOriginalAssets: false, // 不删除源文件
				})
			);
		}

		// 配置 webpack 识别 markdown 为普通的文件
		config.module.rule("markdown").test(/\.md$/).use().loader("file-loader").end();

		// 编译vxe-table包里的es6代码，解决IE11兼容问题
		config.module
			.rule("vxe")
			.test(/\.js$/)
			.include.add(resolve("node_modules/vxe-table"))
			.add(resolve("node_modules/vxe-table-plugin-antd"))
			.end()
			.use()
			.loader("babel-loader")
			.end();
	},

	css: {
		loaderOptions: {
			less: {
				modifyVars: {
					/* less 变量覆盖，用于自定义 ant design 主题 */
					"primary-color": "#1890FF",
					"link-color": "#1890FF",
					"border-radius-base": "4px",
				},
				javascriptEnabled: true,/*这个可以解决less方法无法执行的问题*/
				rewriteUrls: 'all'/*这个解决字体图标无法显示的问题*/
			},
		},
	},

	devServer: {
		port: 3000,
		// hot: true,
		// disableHostCheck: true,
		// overlay: {
		//     warnings: false,
		//     errors: true,
		// },
		// headers: {
		//     'Access-Control-Allow-Origin': '*',
		// },
		proxy: {
			"/jeecg-boot": {
				target: "http://192.168.110.159:9090",
				ws: false,
				changeOrigin: true,
			},
		},
	},

	lintOnSave: undefined,
};
